//#include <stdio.h>
//
//#define MOD 998244353
//
//int main() 
//{
//    int n;
//    scanf_s("%d", &n);
//
//    if (n <= 1) 
//    {
//        printf("1\n");
//        return 0;
//    }
//
//    long long dp0 = 1; 
//    long long dp1 = 1; 
//    long long dp2 = 0;
//
//    for (int i = 2; i <= n; i++) 
//    {
//        dp2 = (dp0 + dp1) % MOD;
//        dp0 = dp1; 
//        dp1 = dp2;
//    }
//
//    printf("%lld\n", dp2);
//    return 0;
//}

//#include <stdio.h>
//
//int main() {
//    int n;
//    scanf_s("%d", &n);
//
//    int min_coins = n; 
//
//    for (int k = 0; k <= n / 7; k++) 
//    {
//        int r = n - 7 * k; 
//        if (r < 0) break; 
//
//        int coins = k + r / 5 + r % 5; 
//        if (coins < min_coins) 
//        {
//            min_coins = coins; 
//        }
//    }
//
//    printf("%d\n", min_coins);
//    return 0;
//}

//#include <stdio.h>
//
//int main() 
//{
//    int n;
//    scanf_s("%d", &n);
//
//    long long prev2 = 0;   
//    long long prev1 = 0;  
//    long long current = 0; 
//    int a_val;     
//
//    if (n >= 1) 
//    {
//        scanf_s("%d", &a_val);
//    }
//
//    for (int i = 2; i <= n; i++)
//    {
//        scanf_s("%d", &a_val); 
//        current = (prev1 < prev2 ? prev1 : prev2) + a_val;
//        prev2 = prev1;
//        prev1 = current;
//    }
//    printf("%lld\n", current);
//    return 0;
//}

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    long long x;
    long long v;
} Car;

int cmp_car(const void* a, const void* b) 
{
    Car* carA = (Car*)a;
    Car* carB = (Car*)b;
    if (carA->x < carB->x) return -1;
    if (carA->x > carB->x) return 1;
    return 0;
}

int main() 
{
    int n;
    scanf_s("%d", &n);
    Car* cars = (Car*)malloc(n * sizeof(Car));
    for (int i = 0; i < n; i++) 
    {
        scanf_s("%lld %lld", &cars[i].x, &cars[i].v);
    }

    qsort(cars, n, sizeof(Car), cmp_car);

    long long* arr = (long long*)malloc(n * sizeof(long long));
    for (int i = 0; i < n; i++)
    {
        arr[i] = -cars[i].v;
    }

    long long* tail = (long long*)malloc(n * sizeof(long long));
    int len = 0;
    for (int i = 0; i < n; i++)
    {
        if (len == 0 || arr[i] >= tail[len - 1])
        {
            tail[len++] = arr[i];
        }
        else
        {
            int low = 0, high = len - 1;
            int pos = len - 1; 
            while (low <= high) {
                int mid = (low + high) / 2;
                if (tail[mid] > arr[i]) 
                {
                    pos = mid;
                    high = mid - 1;
                }
                else
                {
                    low = mid + 1;
                }
            }
            tail[pos] = arr[i];
        }
    }

    printf("%d\n", n - len);
    free(cars);
    free(arr);
    free(tail);
    return 0;
}